Multi-scale view navigation system,method and medium embodying the same

ABSTRACT

A system and method for displaying a chart or map such that the area in close proximity to an area of interest is in greater scale than an area that is distant and creating the image dynamically. The method includes a projection function capable of creating or reading reduced scale cache images and displaying those images concurrently with full detail source chart images. The system includes hardware such as a processor, a memory storage device, a drive, a input device among others, and software such as a navigational software program, cache images, and a projection function among other things to produce a spherical view of a displayed electronic chart

BACKGROUND OF THE INVENTION

[0001] 1. Field of the Invention

[0002] The present invention relates generally to mobile electronics,and more particularly, to a navigation system capable of displaying achart or map such that the area in close proximity to an area ofinterest is in greater scale than an area that is distant.

[0003] 2. Description of the Background Art

[0004] Various types of navigation systems and methods which have beenapplied to route guidance systems of boats, vehicles and airplanes onwater, land, or in the air or to portable navigating apparatuses andmethods have been used and are well known in the art.

[0005] A common shortcoming of these systems is that the screen on whichmaps or charts are displayed only display either short-term planninginformation by zooming in on a specific location or long-termroute/chart planning information by zooming out and viewing a greaterarea. Thus, in prior navigation systems, to view a “big picture” of aroute, the user must zoom out, losing important details about the areaimmediately surrounding the user. This is shown in FIGS. 1 and 2 (longterm) and FIGS. 4 and 5 (short term). In addition, because nauticalcharts tend to be quite large, and computer screens tend to be quitesmall, it is often difficult to determine where you are on a chartbecause only a small portion of the chart can be viewed on any usablescale. These same difficulties are present in other map and chart types.

[0006] Historically, the “big picture” view is generated by zooming out(viewing the same chart at a reduced level of zoom) or loading a chartof a smaller scale (displaying a chart which covers a wider area), asshown in FIGS. 1 and 2. When a chart is zoomed out, the user is able toview more of the chart, but the details become increasingly difficult toread. Important navigational information can become so difficult to readthat it is virtually useless. Further, when loading charts of smallerscale, details that are important for short term navigation are oftenleft out of small scale charts in order to reduce the general clutter ofthe chart while attempting to show those features that are consideredmost important at that scale.

[0007] On a traditional electronic chart, if an object is 100 pixelsfrom the user on the chart and 1 mile from the user in reality, then anobject 200 pixels from the user on the chart will be approximately 2miles from the user in reality. This function of distance from the useron a chart to distance from the user in the real world is linear (or itat least matches the chart projection), and can be represented asfollows:

[0008] Linear

[0009] 1100 pixels=1 mile

[0010] 200 pixels=2 miles

[0011] 300 pixels=3 miles

[0012] 400 pixels=4 miles

SUMMARY OF THE INVENTION

[0013] In the present invention, the zoom level/projection of theelectronic chart display is modified so that areas of the electronicchart that are further from the user are displayed with less detail thanthose areas in close proximity to the user, creating a spherical view ofa relatively large portion of the chart. The advantage of this system isthat much more of the chart can be displayed.

[0014] The present invention overcomes the shortcomings discussed aboveby employing a differential zoom function that decreases the resolutionof those areas distant from the area of interest while keeping the areasof importance, namely those in close proximity, at a higher zoom level.Although the details of distant areas cannot be seen, such details ofdistant areas do not need to be displayed because the distant view isneeded only for planning purposes. The invention allows a user to viewan area that is distant from the current location in detail foradditional planning purposes without changing the display so that thecurrent location cannot be seen on the display. Thus, a single computerscreen can display both short-term and long-term navigation information.

[0015] In the present invention, the functions used to modify the chartcan either be non-continuous or continuous functions. In anon-continuous function, for example, the pixels that are within 100pixels of the area of interest are displayed at a 1:1 ratio; the pixelsmore than 100 pixels from the area of interest are displayed using adifferent function which decreases the scale as the distance getsgreater from the area of interest, as shown in FIG. 6. In thisparticular example, there is little chart distortion around the area ofinterest. The chart area shown near the area of interest displaysnormally and the chart area shown far from the user is shown in aslightly spherical configuration, and can be used for longer termnavigation purposes.

[0016] Theoretically, there are infinite number of substitutions thatcould be made for this function that will allow for a variety of chartdisplays. The following are possible functions:

[0017] 2d

[0018] 100 pixels=1 mile

[0019] 200 pixels=2 miles

[0020] 300 pixels=4 miles

[0021] 400 pixels=8 miles

[0022] . . .

[0023] u*d

[0024] 100 pixels=1 mile

[0025] 200 pixels=2 miles

[0026] 300 pixels=9 miles

[0027] 400 pixels=16 miles

[0028] With each of these reduction functions, as the distance from thecenter increases, distances between individual pixels as related to thereal world increase as well. As you get further from the user, the scaleof the chart is smaller. Another aspect of the invention is that ifbearings hold true on the original chart (before modification of thedisplay), bearings will hold true in the modified version. In otherwords, the reduction functions effect apparent distance to objects, notthe angle to the object. If you measure an angle of 30 degrees to anobject both on the chart, and in the real world (such as on a MercatorProjection) chart, the angle will also be 30 degrees when the chart isshown in the program. Likewise, if an object appears to be directlyahead or put another way, in a straight line from a point of theoriginal chart or visually from the users perspective, it will bedirectly ahead or straight from the point in the spherical view.

[0029] Another aspect of the invention is that if a reduction functionis used that has a computable inverse function, pixels can be convertedboth forward and backward from original chart to the displayed sphericalview. This allows distances and latitude/longitude to be computed to orfrom the display screen.

[0030] Another aspect of the invention is that the area of interest tothe user need not be centered in the projected view. The area ofinterest can be located at one end of the screen in such a way, forexample, that nothing can be seen rearward of the user's direction oftravel, allowing additional details to be seen in front of the directionof travel. In this example, the center of the projection is at one edgeof the screen.

[0031] Another aspect of the invention is that it is not limited to onlyone center of the spherical view. The invention can have the start andend of a route displayed at 1:1 while the areas along the route aredisplayed at a smaller scale. A weighted function based on distance fromthe start and end could be employed to create a reduced scale view.

BRIEF DESCRIPTION OF THE DRAWINGS

[0032]FIG. 1 shows an entire nautical chart, such as what is availablein the prior art. An outline is provided to demonstrate the area 50,which can be viewed when zoom level is 100%.

[0033]FIG. 2 shows an entire nautical chart, such as is available in theprior art. An outline is provided to demonstrate the area 60, which canbe viewed in software when zoom level is 50%.

[0034]FIG. 3 shows an entire nautical chart, such as is available in theprior art. An outline is provided to demonstrate the area 70, which canbe viewed using spherical view.

[0035]FIG. 4 shows the area 50 outlined in FIG. 1 displayed at 100%zoom.

[0036]FIG. 5 shows the area 60 outlined in FIG. 2 displayed at 50% zoom.

[0037]FIG. 6 shows the area 70 outlined in FIG. 3 displayed in sphericalview. The area at the bottom of the chart is in 100% zoom, and as thedistance increases from the bottom of the display the zoom decreasespresenting the horizon effect 74 and providing both short termnavigation and planning and long term navigation and planning.

[0038]FIG. 7 is a functional block diagram of a comparative example ofone of the preferred embodiments.

[0039]FIG. 8 is an operational flow chart of a comparative example ofone of the preferred embodiments.

DETAILED DESCRIPTION OF THE PREFERRED EMBODIMENTS

[0040] While the present invention may be embodied in many differentforms, several specific embodiments are discussed herein with theunderstanding that the present disclosure is to be considered only as anexemplification of the principles of the present invention, and it isnot intended to limit the present invention to the embodimentsillustrated.

[0041] The preferred embodiment of the invention includes both hardwareand software components. Referring to FIG. 7, a block diagram of anavigation system 10 is shown. The navigation system 10 can be installedin a vessel, such as a boat, vehicle or airplane. In alternativeembodiments, the navigation system 10 may be implemented as a portablesystem, or may be implemented on a personal computer (such as a desktopor portable notebook) or a personal digital assistant.

[0042] In the embodiment illustrated in FIG. 7, the navigation system 10includes a processor 12, a drive 14 connected to the processor 12, and amemory storage device 16 for storing a navigation software program 18,cache images 20 and a projection function 40. The processor 12 may be ofany type used or known in the art to be suitable for such applicationsor processors that may be developed in the future.

[0043] The navigation system 10 also includes a user interface 32. Theuser interface 32 may include a display, speakers, or other means torelay information back to the user, referred to herein as a screen ordisplay unit. The user interface 32 may also include at least one devicethat allows the user to input information into the navigation system 10.The equipment used to input information into the navigation system 10may include a touch screen, a mouse, a touchpad, a keyboard, amicrophone for voice activation as well as the appropriate software foreach input device

[0044] The navigation system 10 uses a chart database 30 having sourcechart data and may optionally include preloaded cache images 20, storedon a storage medium 34. The storage medium 34 is installed in the drive14 so that the chart database 30 can be read and used in the navigationsystem 10. The storage medium 34 may be removable and replaceable sothat a storage medium with an appropriate chart database 30 for thegeographic locality may be used or so that it is easily updated.

[0045] In one embodiment, the storage medium 34 is a CD-ROM disc.Various other storage media may be used, including fixed or hard disks,DVD (digital video disks), PCMCIA cards or other currently availablestorage media, as well as storage media that may be developed in thefuture. The chart database 30, or portions thereof, may also be providedto the navigation system 10 via wireless transmission.

[0046] The navigation system 10 may optionally include a positiondetecting system 24. The position detecting system 24 may utilize globalpositioning system (GPS) technology or other systems which are known inthe art. The position detecting system 24 may include a system tocommunicate other considerations such as direction or speed of the user.The position detecting system 24 provides position information to theprocessor 12. The relayed information may be further processed by thenavigation software program 18 that is run on the processor 12 todetermine the location, direction, speed, etc., of the user.

[0047] In one aspect of the preferred embodiment, when the inventionincludes the position detecting system 24 and the user is in motion, thearea of the chart that is near the user (and hence near the center ofthe projection) requires frequent updating. Other more distant parts ofthe chart will require less frequent updates (until the user approachesthat section of the source chart). Additional efficiency is added bycomputing a cutoff distance on each update in which the screen chartdoes not change over a predetermined distance as a result of the user'smovement. Employing the computed distance, the system updates only thechanged sections of the chart.

[0048] Referring again to FIG. 7, the navigation software program 18 isloaded from the memory storage device 16 into a RAM 22 coupled with theprocessor 12 in order to operate the navigation system 10. Thenavigation system 10 uses the chart database 30 stored on the storagemedium 34, optionally with the position detecting system 24, to providevarious navigation features and functions. The navigation softwareprogram 18 may include separate applications that provide navigationfeatures and functions, such as route calculation, chart display, userpositioning (e.g., chart matching), route guidance (wherein detaileddirections are provided for reaching a desired destination), and otherfunctions.

[0049] Referring to FIG. 8, in the navigation software program 18, thechart creation and display of the cache images is provided by aprojection function 40 for switching cache images 20, which can beoptionally stored in the storage medium 34 or in the memory storagedevice 16 from one to another and from source chart data to cache imagesand back again. FIG. 6 shows the spherical view and FIG. 3 shows thesource chart data. The projection function 40 controls the displayedimage by superimposing the cache images 20 the storage medium 34 or thememory storage device 16 on to the source chart data pixels selectedfrom the chart database 30 and displays the cache images 20 on thescreen of the display unit 32.

[0050] The projection function 40 first reads a plurality of sourcechart data having source pixels associated with the source chart datafrom the chart database 30 contained on the storage medium 34 anddisplays a chart on the screen of the display unit 32. The projectionfunction 40 then applies a cache image 20, so that the selected cacheimage 20 is superimposed on the corresponding source chart data suchthat the source pixels of the source chart data that are not affected bythe projection function 40 can be viewed simultaneously.

[0051] The projection function 40 functions, such that, all pixels thatmap from the unmodified source chart data to the display unit 32 are runthrough the projection function 40 and a new location on the displayunit 32 is computed. Where pixels overlap, the overage of the overlappedpixels are displayed. For example, if a pixel is located 800 pixels fromthe origin (center of the area of interest) in the source chart data andthe reduction function transforms that value to 100 pixels, the newpixel will be located 100 pixels form the origin on the display unit 32.If the pixel was located 1600 pixels from the origin and the reductionfunction transforms 1600 pixels to 150 pixels, that pixel would belocated 150 pixels from the origin on the screen.

[0052] The main obstacle with implementing a reduction function withoutthe present invention is the amount of data that contributes to thedisplay of chart areas on the periphery of the screen display. Thoseareas near the area of interest are displayed at approximately 1:1compared with the original chart database. Those areas on the peripheryare reduced by a factor of as much as 20 or more, but still include allthe detail of a 1:1 view. This can cause speed and memory problemsbecause the amount of data that needs to be processed by the processor12 to build a single screen is very large. On a display screen 32 thatis 1024×768 resolution, one would never need to look at more than about780,000 source pixels, however, at a 50% zoom the number of pixels isfour times that. Thus, the spherical view, because of its “big picture”capability, requires the processing of a very large number of sourcechart data pixels. The screen remains 1024×768, but the informationdisplayed covers a large portion of the chart. If the original chart is12000×9000 pixels, the system must analyze as many as 54 million pixels.

[0053] Speed of chart drawing and display is crucial for navigation andmapping applications, therefore, the preferred embodiment utilizes theprojection function 40 that reduces the processing required to updatethe spherical view screen. This allows the navigation system 10 to runin real time, updated continuously. The navigation system 10 employs thereduced resolution caches 20, either created “on the fly” or preloaded,of the original chart database 30 and then uses these caches 20 toproduce the final displays. For example, in a preferred embodimenthaving a block of 128×128 pixels in the source chart database 30, theblock maps to a single pixel on the display screen 32. If it isnecessary to average the colors of all these pixels into the color ofthe single pixel, over 16,000 source chart data pixels must be processedto display a single pixel at the periphery of the screen image. However,in accordance with a preferred embodiment of the invention, a cacheimage which is ⅛ the resolution of the original chart may be retrievedfrom the stored cache images 20. Therefore, there is no need to processa block of 128×128 pixels from the source chart database 30; instead, itis necessary to process a block of only 128/8×128/8 pixels, or 16×16, inthe cache image. This, only 256 pixels need to be processed by aprocessor 12, allowing for greatly reduced computation times for eachsource image. As a further example, if the cache is {fraction (1/64)}size, a block of only 2×2 pixels in the cache needs to be processed. Thecomputation of reduced block sizes through the use of the cache images20 is much more efficient than processing the full block image from thesource chart data. The cache images 20 can either be created on the flyand then stored on the memory storage device 16 or preloaded onto thechart database 30. Either technique reduces the number of pixelsrequiring processing by a processor 12 to a much more manageable size.The exact scale values used for the cache dimension are not importantfor the projection function 40, and, there is an infinite number ofcache images 20 that can be used in accordance with the presentinvention. For example, ½, ¼, ⅛, {fraction (1/16)}, or any other sizecaches can be created and used, depending upon the requirements of thespecific application. In an alternate embodiment, an entire pyramid ofcache images 20 can be used to ensure that there is no need for morethan one cache pixel to be processed.

[0054] There are a variety of ways to determine from which cache image20 the destination pixel colors should be drawn from. In one embodimentof the invention, the determination could be based on a fixed number ofpixels (i.e., 100 pixels from the area of interest). In anotherembodiment of the invention, the determination could also be based onusing the cache image 20, which requires the least amount of samples toproduce a desired amount of anti-aliasing. For example, if 3×3 (9)pixels were required from the source image to represent the destinationpixels color but would only require 1 pixel from a 33% reduced sizecache, there would be no image quality advantage to using the sourceimage but there would be a computational disadvantage. Furthermore, itwould not be optimal to pull source colors from a cache image 20 whichhas insufficient resolution to hold the level of detail desired indisplaying. If the destination screen pixel maps to one source pixel onthe original chart, it is not optimal to sample that pixels color from areduced size cache image 20, blurring or pixelation would occur in thatcase. Optimally, the source pixel is sampled from the cache image 20,which has a zoom level that most closely matches the zoom reductionfactor found at the destination location. For example, if the reductionfactor on a particular pixel was 50%, 100 pixels from the origin,optimally pixel from a 50% zoomed cache image 20 would be sampled. Iftwo cache images 20, 25% and 50% existed, and a destination pixelexisted that had a reduction factor of 40%, it is optimal to samplethose pixels from the 50% cache image 20, sampling from the 25% percentcache image 20 would lead to unnecessary blurring.

[0055] In one embodiment of the invention, the screen image is processedin two passes, pass one processes the entire screen using the cacheimage as the source of all pixel colors. On pass two, taking advantageof the source tiles previously loaded from the original source image.When pixel data is loaded from a chart database 30, the data is dividedinto groups called tiles. Tiles generally have a size around 320 pixelswide by 240 pixels high. If the source chart database 30 was 11000pixels by 9000 pixels, it would be composed of 11000/320*9000/240=1330tiles. A box is defined based on the source tiles (2.5 tiles high by 5tiles wide), and any screen pixels whose inverse projection falls withinthis box are rendered to the screen using the methods described below.Any screen pixels whose inverse projection falls outside this box areleft alone. In this way tile caching is used and it decreases the timeto render the same area (or close to the same area), repeatedly.

EXAMPLE 1 Creating an Image Cache

[0056] A chart for 10×10 pixels represented by the following array ofcolors c00 through c99: c00 c01 c02 c03 c04 c05 c06 c07 c08 c09 c10 c11c12 c13 c14 c15 c16 c17 c18 c19 c20 c21 c22 c23 c24 c25 c26 c27 c28 c29c30 c31 c32 c33 c34 c35 c36 c37 c38 c39 c40 c41 c42 c43 c44 c45 c46 c47c48 c49 c50 c51 c52 c53 c54 c55 c56 c57 c58 c59 c60 c61 c62 c63 c64 c65c66 c67 c68 c69 c70 c71 c72 c73 c74 c75 c76 c77 c78 c79 c80 c81 c82 c83c84 c85 c86 c87 c88 c89 c90 c91 c92 c93 c94 c95 c96 c97 c98 c99

[0057] There are many ways to create reduced image cache sizes, forexample, ½ or ⅕ the average of the original colors that contribute toeach pixel in the reduced resolution version. A simple box filter, whichtakes the mean of the overlapping pixels, is shown below. Cache imagewith ½ scale 5×5 array of pixels whose values are computed as such.$\begin{matrix}\underset{= \quad {= \quad {= \quad {= \quad {= \quad {= \quad {= \quad {= \quad {= \quad {= \quad =}}}}}}}}}}{\begin{matrix}{} \\{} \\{}\end{matrix}\begin{matrix}{\left( {{c00} + {c01}} \right)} \\{+} \\{\left( {{c10} + {c11}} \right)}\end{matrix}\begin{matrix}{} \\{} \\{}\end{matrix}} \\4\end{matrix}\quad \begin{matrix}\underset{= \quad {= \quad {= \quad {= \quad {= \quad {= \quad {= \quad {= \quad {= \quad {= \quad =}}}}}}}}}}{\quad {\begin{matrix}{} \\{} \\{}\end{matrix}\begin{matrix}{\left( {{c02} + {c03}} \right)} \\{+} \\{\left( {{c12} + {c13}} \right)}\end{matrix}\begin{matrix}{} \\{} \\{}\end{matrix}}} \\4\end{matrix}\begin{matrix}\underset{\quad {= \quad {= \quad {= \quad {= \quad {= \quad {= \quad {= \quad {= \quad {= \quad {= \quad =}}}}}}}}}}}{\begin{matrix}{\quad {}} \\{\quad {}} \\{}\end{matrix}\begin{matrix}{\left( {{c04} + {c05}} \right)} \\{+} \\{\left( {{c14} + {c15}} \right)}\end{matrix}\begin{matrix}{} \\{} \\{}\end{matrix}} \\4\end{matrix}\begin{matrix}\underset{\quad {= \quad {= \quad {= \quad {= \quad {= \quad {= \quad {= \quad {= \quad {= \quad {= \quad =}}}}}}}}}}}{\begin{matrix}{} \\{} \\{}\end{matrix}\begin{matrix}{\left( {{c06} + {c07}} \right)} \\{+} \\{\left( {{c16} + {c16}} \right)}\end{matrix}\begin{matrix}{} \\{} \\{}\end{matrix}} \\4\end{matrix}\quad \begin{matrix}\underset{= \quad {= \quad {= \quad {= \quad {= \quad {= \quad {= \quad {= \quad {= \quad {= \quad =}}}}}}}}}}{\begin{matrix}{} \\{} \\{}\end{matrix}\begin{matrix}{\left( {{c08} + {c09}} \right)} \\{+} \\{\left( {{c18} + {c19}} \right)}\end{matrix}\begin{matrix}{} \\{} \\{}\end{matrix}} \\4\end{matrix}$

$\begin{matrix}\underset{= \quad {= \quad {= \quad {= \quad {= \quad {= \quad {= \quad {= \quad {= \quad {= \quad =}}}}}}}}}}{\begin{matrix}{} \\{} \\{}\end{matrix}\begin{matrix}{\left( {{c20} + {c21}} \right)} \\{+} \\{\left( {{c30} + {c31}} \right)}\end{matrix}\begin{matrix}{} \\{} \\{}\end{matrix}} \\4\end{matrix}\quad \begin{matrix}\underset{= \quad {= \quad {= \quad {= \quad {= \quad {= \quad {= \quad {= \quad {= \quad {= \quad =}}}}}}}}}}{\quad {\begin{matrix}{} \\{} \\{}\end{matrix}\begin{matrix}{\left( {{c22} + {c23}} \right)} \\{+} \\{\left( {{c32} + {c33}} \right)}\end{matrix}\begin{matrix}{} \\{} \\{}\end{matrix}}} \\4\end{matrix}\begin{matrix}\underset{\quad {= \quad {= \quad {= \quad {= \quad {= \quad {= \quad {= \quad {= \quad {= \quad {= \quad =}}}}}}}}}}}{\begin{matrix}{\quad {}} \\{\quad {}} \\{}\end{matrix}\begin{matrix}{\left( {{c24} + {c25}} \right)} \\{+} \\{\left( {{c34} + {c35}} \right)}\end{matrix}\begin{matrix}{} \\{} \\{}\end{matrix}} \\4\end{matrix}\begin{matrix}\underset{\quad {= \quad {= \quad {= \quad {= \quad {= \quad {= \quad {= \quad {= \quad {= \quad {= \quad =}}}}}}}}}}}{\begin{matrix}{} \\{} \\{}\end{matrix}\begin{matrix}{\left( {{c26} + {c27}} \right)} \\{+} \\{\left( {{c36} + {c37}} \right)}\end{matrix}\begin{matrix}{} \\{} \\{}\end{matrix}} \\4\end{matrix}\quad \begin{matrix}\underset{= \quad {= \quad {= \quad {= \quad {= \quad {= \quad {= \quad {= \quad {= \quad {= \quad =}}}}}}}}}}{\begin{matrix}{} \\{} \\{}\end{matrix}\begin{matrix}{\left( {{c28} + {c29}} \right)} \\{+} \\{\left( {{c38} + {c39}} \right)}\end{matrix}\begin{matrix}{} \\{} \\{}\end{matrix}} \\4\end{matrix}$

$\begin{matrix}\underset{= \quad {= \quad {= \quad {= \quad {= \quad {= \quad {= \quad {= \quad {= \quad {= \quad =}}}}}}}}}}{\begin{matrix}{} \\{} \\{}\end{matrix}\begin{matrix}{\left( {{c40} + {c41}} \right)} \\{+} \\{\left( {{c50} + {c51}} \right)}\end{matrix}\begin{matrix}{} \\{} \\{}\end{matrix}} \\4\end{matrix}\quad \begin{matrix}\underset{= \quad {= \quad {= \quad {= \quad {= \quad {= \quad {= \quad {= \quad {= \quad {= \quad =}}}}}}}}}}{\quad {\begin{matrix}{} \\{} \\{}\end{matrix}\begin{matrix}{\left( {{c42} + {c43}} \right)} \\{+} \\{\left( {{c52} + {c53}} \right)}\end{matrix}\begin{matrix}{} \\{} \\{}\end{matrix}}} \\4\end{matrix}\begin{matrix}\underset{\quad {= \quad {= \quad {= \quad {= \quad {= \quad {= \quad {= \quad {= \quad {= \quad {= \quad =}}}}}}}}}}}{\begin{matrix}{\quad {}} \\{\quad {}} \\{}\end{matrix}\begin{matrix}{\left( {{c44} + {c45}} \right)} \\{+} \\{\left( {{c54} + {c55}} \right)}\end{matrix}\begin{matrix}{} \\{} \\{}\end{matrix}} \\4\end{matrix}\begin{matrix}\underset{\quad {= \quad {= \quad {= \quad {= \quad {= \quad {= \quad {= \quad {= \quad {= \quad {= \quad =}}}}}}}}}}}{\begin{matrix}{} \\{} \\{}\end{matrix}\begin{matrix}{\left( {{c46} + {c47}} \right)} \\{+} \\{\left( {{c56} + {c56}} \right)}\end{matrix}\begin{matrix}{} \\{} \\{}\end{matrix}} \\4\end{matrix}\quad \begin{matrix}\underset{= \quad {= \quad {= \quad {= \quad {= \quad {= \quad {= \quad {= \quad {= \quad {= \quad =}}}}}}}}}}{\begin{matrix}{} \\{} \\{}\end{matrix}\begin{matrix}{\left( {{c48} + {c49}} \right)} \\{+} \\{\left( {{c58} + {c59}} \right)}\end{matrix}\begin{matrix}{} \\{} \\{}\end{matrix}} \\4\end{matrix}$

$\begin{matrix}\underset{= \quad {= \quad {= \quad {= \quad {= \quad {= \quad {= \quad {= \quad {= \quad {= \quad =}}}}}}}}}}{\begin{matrix}{} \\{} \\{}\end{matrix}\begin{matrix}{\left( {{c60} + {c61}} \right)} \\{+} \\{\left( {{c70} + {c71}} \right)}\end{matrix}\begin{matrix}{} \\{} \\{}\end{matrix}} \\4\end{matrix}\quad \begin{matrix}\underset{= \quad {= \quad {= \quad {= \quad {= \quad {= \quad {= \quad {= \quad {= \quad {= \quad =}}}}}}}}}}{\quad {\begin{matrix}{} \\{} \\{}\end{matrix}\begin{matrix}{\left( {{c62} + {c63}} \right)} \\{+} \\{\left( {{c72} + {c73}} \right)}\end{matrix}\begin{matrix}{} \\{} \\{}\end{matrix}}} \\4\end{matrix}\begin{matrix}\underset{\quad {= \quad {= \quad {= \quad {= \quad {= \quad {= \quad {= \quad {= \quad {= \quad {= \quad =}}}}}}}}}}}{\begin{matrix}{\quad {}} \\{\quad {}} \\{}\end{matrix}\begin{matrix}{\left( {{c64} + {c65}} \right)} \\{+} \\{\left( {{c74} + {c75}} \right)}\end{matrix}\begin{matrix}{} \\{} \\{}\end{matrix}} \\4\end{matrix}\begin{matrix}\underset{\quad {= \quad {= \quad {= \quad {= \quad {= \quad {= \quad {= \quad {= \quad {= \quad {= \quad =}}}}}}}}}}}{\begin{matrix}{} \\{} \\{}\end{matrix}\begin{matrix}{\left( {{c66} + {c67}} \right)} \\{+} \\{\left( {{c76} + {c77}} \right)}\end{matrix}\begin{matrix}{} \\{} \\{}\end{matrix}} \\4\end{matrix}\quad \begin{matrix}\underset{= \quad {= \quad {= \quad {= \quad {= \quad {= \quad {= \quad {= \quad {= \quad {= \quad =}}}}}}}}}}{\begin{matrix}{} \\{} \\{}\end{matrix}\begin{matrix}{\left( {{c68} + {c69}} \right)} \\{+} \\{\left( {{c78} + {c79}} \right)}\end{matrix}\begin{matrix}{} \\{} \\{}\end{matrix}} \\4\end{matrix}$

$\begin{matrix}\underset{= \quad {= \quad {= \quad {= \quad {= \quad {= \quad {= \quad {= \quad {= \quad {= \quad =}}}}}}}}}}{\begin{matrix}{} \\{} \\{}\end{matrix}\begin{matrix}{\left( {{c80} + {c81}} \right)} \\{+} \\{\left( {{c90} + {c91}} \right)}\end{matrix}\begin{matrix}{} \\{} \\{}\end{matrix}} \\4\end{matrix}\quad \begin{matrix}\underset{= \quad {= \quad {= \quad {= \quad {= \quad {= \quad {= \quad {= \quad {= \quad {= \quad =}}}}}}}}}}{\quad {\begin{matrix}{} \\{} \\{}\end{matrix}\begin{matrix}{\left( {{c82} + {c83}} \right)} \\{+} \\{\left( {{c92} + {c93}} \right)}\end{matrix}\begin{matrix}{} \\{} \\{}\end{matrix}}} \\4\end{matrix}\begin{matrix}\underset{\quad {= \quad {= \quad {= \quad {= \quad {= \quad {= \quad {= \quad {= \quad {= \quad {= \quad =}}}}}}}}}}}{\begin{matrix}{\quad {}} \\{\quad {}} \\{}\end{matrix}\begin{matrix}{\left( {{c84} + {c85}} \right)} \\{+} \\{\left( {{c94} + {c95}} \right)}\end{matrix}\begin{matrix}{} \\{} \\{}\end{matrix}} \\4\end{matrix}\begin{matrix}\underset{\quad {= \quad {= \quad {= \quad {= \quad {= \quad {= \quad {= \quad {= \quad {= \quad {= \quad =}}}}}}}}}}}{\begin{matrix}{} \\{} \\{}\end{matrix}\begin{matrix}{\left( {{c86} + {c87}} \right)} \\{+} \\{\left( {{c96} + {c97}} \right)}\end{matrix}\begin{matrix}{} \\{} \\{}\end{matrix}} \\4\end{matrix}\quad \begin{matrix}\underset{= \quad {= \quad {= \quad {= \quad {= \quad {= \quad {= \quad {= \quad {= \quad {= \quad =}}}}}}}}}}{\begin{matrix}{} \\{} \\{}\end{matrix}\begin{matrix}{\left( {{c88} + {c89}} \right)} \\{+} \\{\left( {{c98} + {c99}} \right)}\end{matrix}\begin{matrix}{} \\{} \\{}\end{matrix}} \\4\end{matrix}$

[0058] ⅕ version: 2×2 array of pixels whose values are computed as such.$\begin{matrix}\underset{= \quad {= \quad {= \quad {= \quad {= \quad {= \quad {= \quad {= \quad {= \quad {= \quad {= \quad {= \quad {= \quad {= \quad {= \quad {= \quad {= \quad {= \quad {= \quad {= \quad {= \quad {= \quad =}}}}}}}}}}}}}}}}}}}}}}{\begin{matrix}{} \\{} \\{} \\{} \\{} \\{} \\{} \\{} \\{}\end{matrix}\begin{matrix}{{{c00} + {c01} + {c02} + {c03} + {c04}}} \\{+} \\{{{c10} + {c11} + {c12} + {c13} + {c14}}} \\{+} \\{{{c20} + {c21} + {c22} + {c23} + {c24}}} \\{+} \\{{{c30} + {c31} + {c32} + {c33} + {c34}}} \\{+} \\{{{c40} + {c41} + {c42} + {c43} + {c44}}}\end{matrix}\begin{matrix}{} \\{} \\{} \\{} \\{} \\{} \\{} \\{} \\{}\end{matrix}} \\25\end{matrix}\quad \begin{matrix}\underset{= \quad {= \quad {= \quad {= \quad {= \quad {= \quad {= \quad {= \quad {= \quad {= \quad {= \quad {= \quad {= \quad {= \quad {= \quad {= \quad {= \quad {= \quad {= \quad {= \quad {= \quad {= \quad =}}}}}}}}}}}}}}}}}}}}}}{\begin{matrix}{} \\{} \\{} \\{} \\{} \\{} \\{} \\{} \\{}\end{matrix}\begin{matrix}{{{c05} + {c06} + {c07} + {c08} + {c09}}} \\{+} \\{{{c15} + {c16} + {c17} + {c18} + {c19}}} \\{+} \\{{{c25} + {c26} + {c27} + {c28} + {c29}}} \\{+} \\{{{c35} + {c36} + {c37} + {c38} + {c39}}} \\{+} \\{{{c45} + {c46} + {c47} + {c48} + {c49}}}\end{matrix}\begin{matrix}{} \\{} \\{} \\{} \\{} \\{} \\{} \\{} \\{}\end{matrix}} \\25\end{matrix}$

$\begin{matrix}\underset{= \quad {= \quad {= \quad {= \quad {= \quad {= \quad {= \quad {= \quad {= \quad {= \quad {= \quad {= \quad {= \quad {= \quad {= \quad {= \quad {= \quad {= \quad {= \quad {= \quad {= \quad {= \quad =}}}}}}}}}}}}}}}}}}}}}}{\begin{matrix}{} \\{} \\{} \\{} \\{} \\{} \\{} \\{} \\{}\end{matrix}\begin{matrix}{{{c50} + {c51} + {c52} + {c53} + {c54}}} \\{+} \\{{{c60} + {c61} + {c62} + {c63} + {c64}}} \\{+} \\{{{c70} + {c71} + {c72} + {c73} + {c74}}} \\{+} \\{{{c80} + {c81} + {c82} + {c83} + {c84}}} \\{+} \\{{{c90} + {c91} + {c92} + {c93} + {c94}}}\end{matrix}\begin{matrix}{} \\{} \\{} \\{} \\{} \\{} \\{} \\{} \\{}\end{matrix}} \\25\end{matrix}\begin{matrix}\underset{\quad {= \quad {= \quad {= \quad {= \quad {= \quad {= \quad {= \quad {= \quad {= \quad {= \quad {= \quad {= \quad {= \quad {= \quad {= \quad {= \quad {= \quad {= \quad {= \quad {= \quad {= \quad {= \quad =}}}}}}}}}}}}}}}}}}}}}}}{\begin{matrix}{} \\{} \\{} \\{} \\{} \\{} \\{} \\{} \\{}\end{matrix}\begin{matrix}{{{c55} + {c56} + {c57} + {c58} + {c59}}} \\{+} \\{{{c65} + {c66} + {c67} + {c68} + {c69}}} \\{+} \\{{{c75} + {c76} + {c77} + {c78} + {c79}}} \\{+} \\{{{c85} + {c86} + {c87} + {c88} + {c89}}} \\{+} \\{{{c95} + {c96} + {c97} + {c98} + {c99}}}\end{matrix}\begin{matrix}{} \\{} \\{} \\{} \\{} \\{} \\{} \\{} \\{}\end{matrix}} \\25\end{matrix}$

[0059] Once the cache images have been created, the projection function40 works by looping through the screen display pixels from the chartdatabase 30, computing the locations of the source chart data pixels(taking the inverse of the reduction function to find where the sourcepixels are) and then using the cache to compute the mean of all thesource pixels. When the center of the screen display 32 changes(relative to the source chart database 30), the screen is updated usingthe same projection function 40 and the same cache 20.

EXAMPLE 2 Building a Screen Full of Data

[0060] Screen: 1024×768

[0061] Original image size: 1000000 by 1000000 (in pixels)

[0062] Number of caches: 1

[0063] Cache reduction: 1/256

[0064] Cache size (1000000/256 by 1000000/256)=(3906 by 3906)

[0065] Forward reduction function: sqrt (distance) (in pixels)

[0066] Reverse reduction function: distance*distance (in pixels)

[0067] Projection origin: center of screen (1024/2,768/2)

[0068] Coordinates of upper left corner of screen: (−512,−384)

[0069] Coordinates of center of screen: (0,0)

[0070] Coordinates of lower right corner of screen: (+512,+384)

EXAMPLE

[0071] $\quad\quad \begin{matrix}\left( {{- 512},{- 384}} \right) & \quad & \quad & \quad & \quad \\\quad & \quad & \quad & \quad & \quad \\\quad & \quad & \left( {0,0} \right) & \quad & \quad \\\quad & \quad & \quad & \quad & \quad \\\quad & \quad & \quad & \quad & \left( {{+ 512},{+ 384}} \right)\end{matrix}$

[0072] To compute the color of the pixel located at (−512,−384), theprojection function 40 computes which of the source chart data pixelscontributes to the color of the pixel of the destination pixel. To dothis, the projection function 40 computes the mapping from thedestination screen to the source screen. First, the corners of thedestination pixel on the source pixels are found.

[0073] Corners of Destination Pixel

[0074] C1=(−512,−384) C2=(−512+1,−384

[0075] C3=(−512,−384+1) C4=(−512+1,−384+1)

[0076] Compute the distance from the origin to the pixel corners:

[0077] Distance from (0,0) to C1 (on screen):

[0078] sqrt (−512*−512+−384*−384)

[0079] 640 pixels

[0080] Distance from (0,0) to C2 (on screen):

[0081] sqrt (−511*−511+−384*−384)

[0082] 639.2002 pixels

[0083] Distance from (0,0) to C3 (on screen):

[0084] sqrt (−512*−512+−383*−383)

[0085] 639.4005 pixels

[0086] Distance from (0,0) to C4 (on screen):

[0087] sqrt (−511*−511+−383*−383)

[0088] 638.6000 pixels

[0089] Process these distances through the reverse of the reductionfunction:

[0090] distance from (0,0) to C1 (in source image)=409600

[0091] distance from (0,0) to C2 (in source image)=408577

[0092] distance from (0,0) to C3 (in source image)=408833

[0093] distance from (0,0) to C4 (in source image)=407810

[0094] Calculate the coordinates of the source pixels:

[0095] C1 coordinates in source:

[0096] [sin(arc tan(512/384))*409600, cos(arctan(512/384))*409600][327680, 245760]

[0097] C2 coordinates in source:

[0098] [sin(arc tan(511/384))*408577, cos(arctan(511/384))*408577][326631.3438, 245452.9081]

[0099] C3 coordinates in source:

[0100] [sin(arc tan(512/383))*408833, cos(arctan(512/383))*408833][327373.0562, 244890.3916]

[0101] C4 coordinates in source:

[0102] [sin(arc tan(511/383))*407810, cos(arctan(511/383))*407810][326324.6160, 244583.8119]

[0103] The location of the destination pixel in the source coordinatesystem of the chart database 30 has now been calculated. Using thebounding box of these points in the source coordinate system, thefollowing is found:

[0104] left˜=327680

[0105] right˜=326324

[0106] top˜=245760

[0107] bottom˜=244583

[0108] Take the size of this rectangle:

[0109] width=(327680−326324+1)=1357

[0110] height=(245760−244583+1)=1178

[0111] This is not the actual coverage in the source coordinate systemof the chart database 30 (it has been approximated with a rectangle eventhough it is not a rectangle). The single destination pixel is composedof the average of (1357*1178)=1598546 pixels.

[0112] The next step in computing the destination pixel color is to usethe image cache to get the mean of approximately 1.6 million pixels. Thescale reduction for the cache is 1/256 to convert from the source pixelcoordinate system to the cache coordinate system.

[0113] The source pixels are:

[0114] C1˜=[327680, 245760]

[0115] C2˜=[326631, 245452]

[0116] C3˜=[327373, 244890]

[0117] C4˜=[326324, 244583]

[0118] Mapping to the cache coordinate system:

[0119] C1˜=[327680/256, 245760/256]

[0120] C2˜=[326631/256, 245452/256]

[0121] C3˜=[327373/256, 244890/256]

[0122] C4˜=[326324/256, 244583/256]

[0123] Which equals (after truncating the decimal):

[0124] C1˜=[1280, 960]

[0125] C2˜=[1275, 958]

[0126] C3˜=[1278, 956]

[0127] C4˜=[1274, 955]

[0128] The bounding box of this rectangle is:

[0129] left=1280

[0130] right=1274

[0131] top=960

[0132] bottom=955

[0133] And the size is:

[0134] width=1280−1274+1=7

[0135] height=960−955+1=6

[0136] Compute the mean of the following 42 pixels: [1280,960][1279,960] [1278,960] [1277,960] [1276,960] [1275,960] [1274,960][1280,959] [1279,959] [1278,959] [1277,959] [1276,959] [1275,959][1274,959] [1280,958] [1279,958] [1278,958] [1277,958] [1276,958][1275,958] [1274,958] [1280,957] [1279,957] [1278,957] [1277,957][1276,957] [1275,957] [1274,957] [1280,956] [1279,956] [1278,956][1277,956] [1276,956] [1275,956] [1274,956] [1280,955] [1279,955][1278,955] [1277,955] [1276,955] [1275,955] [1274,955]

[0137] This example shows the algorithm to create a cache image 20 for asingle pixel. To update the entire screen, the algorithm is applied toall pixels in the destination screen and run through the projectionfunction 40.

EXAMPLE 3 Building a Screen of Data

[0138] A 1/1024 scale cache can be used in place of the 1/256 cache asfollows: Mapping to the cache coordinate system:

[0139] C1˜=[327680/1024, 245760/1024]

[0140] C2˜=[326631/1024, 245452/1024]

[0141] C3˜=[327373/1024, 244890/1024]

[0142] C4˜=[326324/1024, 244583/1024]

[0143] Which equals (after truncating the decimal):

[0144] C1˜=[320, 240]

[0145] C2˜=[318, 239]

[0146] C3˜=[319, 239]

[0147] C4˜=[318, 238]

[0148] The bounding box of this rectangle is:

[0149] left=320

[0150] right=318

[0151] top=238

[0152] bottom=239

[0153] And the size is:

[0154] width=320−318+1=3

[0155] height=239−238+1=2

[0156] Compute the mean of the following 6 pixels:

[0157] [320,239] [319,239] [318,239]

[0158] [320,238] [319,238] [318,238]

[0159] Compared to raster manipulation described above, the display ofoverlays and vector information on the displayed charts can be processedmuch faster. This applies to both overlays and entire vector chartsdisplayed on the display screen 32. All vector overlays can be brokendown into line and point primitives. These primitives can have theircoordinates run through the same reduction functions used for the pixellocations. In the case of point objects, there is one calculation to mapto a new location. In the case of line primitives, it is necessary tomap not only the start and end points, but also the intermediate pointssince straight lines will be curved by the spherical view projectionunless the line originates from the center of the projection. Once theintermediate points have been computed, the line can be plotted to matchthe projection used on the raster charts.

EXAMPLE 4 Mapping a Vector Point Object

[0160] Using the sample example parameters as listed above, if an iconis to be plotted on the screen display 32 and that icon is located 1000pixels below the point of interest (on the source chart database 30) and500 pixels to the right of the point of interest (again, on the sourcechart database 30) to calculate where to place the icon on the screen:

[0161] Distance from point of interest to icon:

[0162] sqrt(1000*1000+500*500) 1118 pixels away.

[0163] The distance gets adjusted by the reduction function to be:

[0164] sqrt(1118)=33.4 pixels away.

[0165] The angle (and now the distance) to the icon on the screendisplay 32 is now known, so now compute the offset from the point ofinterest:

[0166] delta x=sin(arc tan(1000/1118))*33.4=22.3

[0167] delta y=cos(arc tan(1000/1118))*33.4=24.9

[0168] If the point of interest is located at the center of the screen32 (512,384), then the icon should be placed at:

[0169] 512+22.3=534

[0170] 384+24.9=408

[0171] [534,408]

EXAMPLE 5 Mapping a Vector Line Object

[0172] Using the example parameters listed in the vector point example,to draw a line from [500,1000] to [700, 400] on the source chartrelative to the center of the projection, the projection function 40breaks the line down into shorter line segments and then computes thelocation of the segments using the same algorithm used in the pointexample. The number of segments created is based on the desiredaccuracy. This example breaks the vector line object into 10 segments.

[0173] 0% distance from [500,1000] to [700, 400] [500, 1000]

[0174] 10% distance from [500,1000] to [700, 400]=[520, 940]

[0175] 20% distance from [500,1000] to [700, 400]=[540, 880]

[0176] 30% distance from [500,1000] to [700, 400]=[560, 820]

[0177] 40% distance from [500,1000] to [700, 400]=[580, 760]

[0178] 50% distance from [500,1000] to [700, 400]=[600, 700]

[0179] 60% distance from [500,1000] to [700, 400]=[620, 640]

[0180] 70% distance from [500,1000] to [700, 400]=[640, 580]

[0181] 80% distance from [500,1000] to [700, 400]=[660, 520]

[0182] 90% distance from [500,1000] to [700, 400]=[680, 460]

[0183] 100% distance from [500,1000] to [700, 400]=[700, 400]

[0184] The projection function 40 converts each of the 11 points usingthe method described above to convert a vector point, and thendetermines where to draw the line segments on the destination screen 32.

EXAMPLE 6

[0185] Enhancement 1

[0186] When building a screen to display to the user, a reduced sizecache is used as well as the original image. In order to bound the sizeof the cache that will be taken up on the users disk (as well as inmemory), the cache is built based on final total size. For example, ifthe original chart was of a dimension 11417 by 9518 (4-bit), that imagewould take 51 Mb of memory/disk space (uncompressed). The bounds are setto be 4 Mb (8-bit, uncompressed) so the cache image for this examplechart would be:

[0187] 11417x*9518x=4 Mb

[0188] x²*(11417*9518)=4 Mb

[0189] x=0.196463

[0190] 2243*1869

[0191] This sets an upper bound on the amount of extra memory and diskspace needed for the cache images.

[0192] Enhancement 2

[0193] In order to show the image in real-time while the user isdragging it, first a screen image is created using only the cache as asource. After creating the original screen image from the cache image20, the system goes back and uses data from the original source chartdatabase 30 to improve the look of the image which is near the center ofthe projection. This allows the image to be drawn quickly while the useris moving the area of interest quickly from place to place (i.e.,scrolling the chart), and then show a final higher quality image on adisplay unit 32 when the final image is desired. The area of the displayunit 32 that is updated with a second, higher quality pass is based on asimple distance cutoff function (centered around the area of interest).

[0194] Enhancement 3

[0195] In order to speed up the processing of creating the finalscreen-image, a step was added that allows the system to compute themappings from chart database 30 to display unit 32 and display unit 32to chart database 30 at higher speeds. The process of going betweenthese coordinate systems uses the reduction function on every pixel ofthe screen image. If the reduction function is computationallyexpensive, this can cause a bottleneck in processing speed. This problemis solved by only calling the reduction function for every 16^(th) pixelon the screen, and using linear interpolation to compute anapproximation of the reduction function for the other pixels. To statethis in another way, the source pixel location is computed for screenlocation (x,y) and then the source pixel location is computed for screenpixel (x+16, y). Then the projection function can fill the screen line(x,y) to (x+16, y) with the pixels located between the two sourcelocations that were computed. The pixels are located by assuming thatthey are in a straight line between the two source locations. Thisapproximation was empirically found to have a negligible effect onquality.

[0196] Enhancement 4

[0197] The application supports both image zooming and image rotation.These are just two more affine transformation functions that are mergedwith the distance reduction function to find the proper source pixels.

[0198] Enhancement 5

[0199] Mathematically, each pixel on the display unit 32 will be mappedonto (or may cover) more then one pixel on the chart database 32. In anidealized version of this algorithm, the final color of each outputpixel would consist of a color contribution from all covered sourcepixels. Even with caching, this would be computationally difficult. Asimple box filter is used to compute an average of the pixels at thesource location and this value is used as the color of the output pixel.The contributions of most other pixels will be introduced through theuse of the image cache.

[0200] Building a full screen of data consists of two major steps:

[0201] 1) Building the “distant” part of the image from the cache image20.

[0202] 2) Building the “near” part of the image from the chart database30.

[0203] The main difference between these two steps is the source ofinput pixels. In building the near, the pixels are obtained directlyfrom the chart database 30, and in building the distant the pixels areobtained from the cache images 20. Since each pixel from the chartdatabase 30 is mapped into one pixel on the cache images 20, thealgorithm for both steps is almost identical.

[0204] Example:

[0205] The part of the screen to fill is of size: 1020×717

[0206] The original image size is: 1 1417×9518

[0207] Number of cache images 20: 1

[0208] Cache reduction amount is: 0.196463 (approx. ⅕^(th))

[0209] Cache size (11417/5 by 9518/5)=(2283 by 1903)

[0210] The location where the vessel is displayed on the display unit 32is the center of the spherical projection. For this example, acoordinate system is defined on the screen where this point is locatedat coordinates (0, 0). Using the “Look ahead” mode of operation thispoint appears at the bottom/center of the display unit 32. The screencoordinates of the upper left screen corner are, therefore, (−1020/2,−717), and the screen coordinate of the bottom right screen corner are(1020/2, 0)

[0211] The chart database 30 coordinate system will be defined asfollows. The upper left corner of the chart database 30 will havecoordinates (0,0) and the bottom right corner of the chart will havecoordinates (11417, 9518)

[0212] To build a full screen of data, the coordinates of the source(chart/cache) pixel are determined for each screen pixel which is beingmapped. The first step is to determine where the center of the screenprojection is going to be on the source chart database 30. This locationwould generally be determined by the user but is most often going to bethe user's vessel location on the source chart database 30. It need notnecessarily be the vessel location since the user could scroll away fromthe vessel in order to view another section of the chart database 30 inbetter detail. For this example the center of the projection is mappedto the point (1250, 1561).

[0213] In the navigation software program 18, the user controls optionsfor chart zoom level and chart rotation. In this example values of 50%zoom and 15 degree chart rotation are used.

[0214] The process of building a screen image can be broken down intothe process of computing each one of the screen lines in sequence. Theprocess of computing the value of one line on the screen can in turn bebroken down into the process of computing the value of each 16-pixelsegment of each line.

[0215] To process one segment, first the coordinates of each segment'sstarting and ending points are calculated. In this example the screensegment which runs from screen coordinates is (−414,−317) to(−398,−317).

[0216] First the distance from the center of projection to the startpixel (on screen) is calculated.

Distance=sqrt ((−414*−414)+(−317*−317))=521.425

[0217] Next the distance is calculated from the center of projection tothe end pixel (again on screen).

Distance=sqrt (((−398)*(−398))+(−317*−317))=508.815

[0218] Next the reduction function is applied in order to find thesource pixels for the start and end segments point.

[0219] The reduction function chosen is defined as follows:

Mp(D)=Rotate(Fp(D))*ChartZoom*CacheReduction+CentProj

[0220] Where

[0221] Rotate is a rotation function, (15 degree rotation)

[0222] Rotation is defined as:

x _(—) rot=x*cos (angle)−y*sin (angle)

y _(—) rot=x*sin (angle))+y*cos (angle)

[0223] x and y are the original coordinates of the pixel p, and x_rotand y_rot are the rotated coordinates of the pixel p.

[0224] Fp(D) is the reverse/inverse reduction function,

[0225] ChartZoom is the selected zoom level (i.e., 0.5)

[0226] CacheReduction is the cache reduction zoom level (i.e., ⅕)

[0227] CentProj is the coordinates of the position of the center of theprojection in chart coordinates (i.e., (1250, 1561)

[0228] For each individual screen pixel p the reverse/inverse reductionfunction is defined as

Fp(D)=Zp(D)*×D

[0229] Where:

[0230] D is the distance from the center of projection to the screenpixel p.

[0231] Fp is the forward reduction function.

[0232] Zp (D) is the zoom coefficient for pixel p.

[0233] The Zoom coefficient for pixel p is calculated as follows:

Zp=power (2,(8*(power((D)/MD, 4))))

[0234] Where:

[0235] MD is the maximum possible screen distance. The distance from(0,0) to a corner. The particular zoom coefficient that was chosen wasdesigned to ensure that the chart will be displayed on-screen in closeto its entirety when the user-chosen zoom level was set to 100%. Thisfunction was arrived at through examination of general chart sizes aswell as attempting to get a ⅛^(th) reduction factor at the most distantpixels on the chart. Another way of saying this is that the function asa value of 1.00 at the center of the projection and ⅛ at the maximumdistance from the center of the projection.

[0236] Now, returning to the reduction function, the maximum distance iscomputed (in screen coordinates):

MD=sqrt((−717)*(−717)+(510)*(510))=879.8801

[0237] Next compute the zoom coefficient for the start pixel:

Zp(D1)=pow(2,(8*pow((521.425)/879.8801),4)))=1.981588

[0238] Next compute the zoom coefficient for the end pixel:

Zp(D2)=pow(2,(8*pow((508.815)/879.8801), 4)))=1.859114

[0239] Next compute the rotated coordinates of the start pixel:

Rotate ([−414,−317],15)=(−318, −413):

−318−414*cos (15)−(−317)*sin (15)

−413=−414*sin (15)−(−317)*cos (15)

[0240] Next compute the rotated coordinates of the end pixel:

Rotate ([−398, −317],15)=(−302, −409)

−302=−398*cos(15)−(−317)*sin(15)

−409=−398*sin(15)−(−317)*cos(15)

[0241] Next apply the cache reduction and chart zoom to the start pixel:

[−252, −327]=[−318 −1.981588/0.5*⅕, −413−1.981588/0.5*⅕]

[0242] Next apply the cache reduction and chart zoom to the end pixel:

[−224, −304]=[−302*1.859114/0.5*⅕, −409*1.859114/0.5*⅕]

[0243] In order to use linear interpolation between the start and endpoints of the source image, a linear increment is computed which willresult in 16 points between the start and end points. The linearincrements are computed as follows:

dx=(−252−(−224))/16=1.75

dy=(−327−(−304))/16=1.4375

[0244] Next the start pixel location is offset using the viewing origin(in chart coordinates), to compute the location of the start pixel inthe source/cache coordinate system:

[−252+1250, −327+1561]=[998, 1234]

[0245] And finally, for the remaining pixels in the segment, the linearincrement is added to find the source coordinates of the remaining 15pixels.

[0246] [˜998 ˜1234]

[0247] [˜999 ˜1235]

[0248] [˜1001 ˜1236]

[0249] [˜1003 ˜1238]

[0250] [˜1005 ˜1239]

[0251] [˜1006 ˜1241]

[0252] [˜1008 ˜1242]

[0253] [˜1010 ˜1244]

[0254] [˜1012 ˜1245]

[0255] [˜1013 ˜1246]

[0256] [˜1015 ˜1248]

[0257] [˜1017 ˜1249]

[0258] [˜1019 ˜1251]

[0259] [˜1020 ˜1252]

[0260] [˜1022 ˜1254]

[0261] [˜1024 ˜1255]

[0262] The locations are identified for all source pixels and the colorcontents are copied from the source chart or cache to the final screenlocation.

[0263] When all segments in all lines have been processed using theprojection function as described above, the screen image is complete.

EXAMPLE 7 Performing Spherical Projection with No Cache:

[0264] It is possible to build screen images using the sphericalprojection without using any additional cache buffers. The sourcecoordinates of a screen pixel may cover many source pixels in theoriginal chart, however, it is not required to utilize the contributionof each source pixel in the destination screen pixel. If instead ofpulling source pixels from the cache a single source pixel (or sample alimited collection of source pixels) was pulled from the original image,an output image could still be produced at high speeds. The point of thecache buffers is to improve the level of quality of the output, andcache buffers are not required to produce an image.

EXAMPLE 8

[0265] If the original image had been stored or converted to aresolution independent format (like Wavelet compression), it would bevery easy to use the lower frequency color components as the source forthe color sampling. Knowing that the screen pixel covered a very largearea of the source chart, the low frequency data could be sampled, ifthe screen pixel mapped to very few pixels (i.e., near the area ofinterest), the higher frequency components could then be sampled. Inprinciple, this is no different than sampling from a store of cacheimages 20, but the wavelet file could be precomputed and exist as asingle (and highly compressed) file.

[0266] Although the invention has been described with respect tospecific embodiments and examples, it should be appreciated that otherembodiments utilizing the concept of the present invention are possiblewithout departing from the scope of the invention. The claimed elements,and any and all modifications, variations or equivalents that fallwithin the true spirit and scope of the underlying principles define thepresent invention.

1. A method of displaying an electronic chart or map comprising:displaying images in close proximity to an area of interest in fulldetail; and simultaneously displaying images more distal to the area ofinterest in reduced scale.
 2. A method for providing navigationalinformation, the method comprising: reading images of source chart datapixels corresponding to a source chart database; determining a locationof an area of interest in relation to the source chart databaseinformation; reading cache images of less resolution (scale) than thosecorresponding to the source chart data pixels; using a projectionfunction that loops through source chart data pixels computing theirlocations and the locations of the corresponding cache images; anddisplaying the source chart data pixels in a close proximity to the areaof interest and displaying the cache images in the more distant areas.3. A method for providing navigational information, the methodcomprising: reading images of source chart data pixels corresponding toa source chart database; determining a location of a user in relation tothe source chart database information using a position detecting system;reading cache images of less resolution (scale) than those correspondingto the source chart data pixels; using a projection function that loopsthrough source chart data pixels computing their locations and thelocations of the corresponding cache images; and displaying the sourcechart data pixels in a close proximity to the area of interest anddisplaying the cache images in the more distant areas.
 4. A storagememory device containing a program for providing a spherical view of anelectronic chart comprising the steps of: reading images of source chartdata pixels corresponding to a source chart database; determining alocation of an area of interest in relation to the source chart databaseinformation; reading cache images stored on the memory storage device ofless resolution (scale) than those corresponding to the source chartdata pixels; using a projection function stored on the memory storagedevice that loops through source chart data pixels computing theirlocations and the locations of the corresponding cache images; anddisplaying the source chart data pixels in a close proximity to the areaof interest and displaying the cache images in the more distant areas.5. A storage memory device containing a program for providing aspherical view of an electronic chart comprising the steps of: readingimages of source chart data pixels corresponding to a source chartdatabase; determining a location of a user in relation to the sourcechart database information using a position detecting system; readingcache images stored on the memory storage device of less resolution(scale) than those corresponding to the source chart data pixels; usinga projection function stored on the memory storage device that loopsthrough source chart data pixels computing their locations and thelocations of the corresponding cache images; and displaying the sourcechart data pixels in a close proximity to the area of interest anddisplaying the cache images in the more distant areas.
 6. The storagememory device of claim 5, wherein the cache images are of differentscales.
 7. The storage memory device of claim 6, wherein the projectionfunction chooses cache images based on a predetermined number of pixelsthe corresponding source pixel is located from the user.
 8. The storagememory device of claim 7, wherein the projection function selectsdifferent scale cache images based on the number of pixels thecorresponding source pixels are located from the user.
 9. A navigationsystem comprising: a storage medium for storing chart databases, suchthat each location on the chart corresponds to source chart data pixels;a plurality of cache images, corresponding to the stored source chartdata pixels, capable of being stored in a memory storage device; aprojection function for switching cache images stored in a memorystorage device from one to another and from source chart data pixels tocache images and back again; and a processor for controlling thedisplayed image by superimposing the cache images on to the source chartdata pixels displayed on a screen of a display unit in accordance with apreselected area of interest; wherein the source chart data pixelscorresponding to the area of interest are displayed at a higherresolution than the cache images corresponding to an area that is notthe area of interest.
 10. A navigation system comprising: a storagemedium for storing chart databases, such that each location on the chartcorresponds to source chart data pixels; a plurality of cache images,corresponding to the stored source chart data pixels, capable of beingstored in a memory storage device; a projection function for switchingcache images stored in a memory storage device from one to another andfrom source chart data pixels to cache images and back again; and aprocessor for controlling the displayed image by superimposing the cacheimages on to the source chart data pixels displayed on a screen of adisplay unit in accordance with a location of a user determined by usinga position detecting system; wherein the source chart data pixelscorresponding to the area of interest are displayed at a higherresolution than the cache images corresponding to an area that is notthe area of interest.
 11. A navigation system for providing a sphericalview of an electronic chart comprising: a storage memory device forstoring a navigation software program; a storage medium for storingchart database and; RAM; display unit; chart database having chart datacorresponding to a source pixel when displayed; cache images havingreduced scale and corresponding to the stored source pixels of the chartdatabase capable of being stored in a storage memory device; projectionfunction for selecting one of the cache images stored in the storagememory device; a processor that uses the projection function to read thesource chart data in accordance with a selected area of interest;controls the read source chart data to be displayed on a screen of thedisplay unit in accordance with the projection function; and furtherreads the selected cache images from the storage memory device inaccordance with the projection function, thereby superimposing theselected scale cache image on the displayed chart; wherein the area ofinterest is displayed at a higher resolution than the cache imagescorresponding to an area that is not the area of interest.
 12. Anavigation system for providing a spherical view of an electronic chartcomprising: a storage memory device for storing a navigation softwareprogram; a storage medium for storing chart database and; RAM; displayunit; a position detecting system for detecting a current position; thechart database having chart data corresponding to a source pixel whendisplayed on the display unit; cache images having reduced scale andcorresponding to the stored source pixels of the chart database capableof being stored in the storage memory device or storage medium;projection function for selecting one of the cache images stored in thestorage memory device; a processor that uses the projection function toread the chart data in accordance with the current position of the userdetected by the position detecting system, controls the read chart datato be displayed on a screen of the display unit in accordance with theprojection function and further reads the selected cache images from thestorage memory device in accordance with the projection function,thereby superimposing the selected scale cache image on the displayedchart; wherein the area of interest is displayed at a higher resolutionthan the cache images corresponding to an area that is not the area ofinterest.